#include "namedpipe.hpp"

// server read: 管理命名管道的整个生命周期
int main()
{
    NamedPipe fifo(common_path, Creator);
    // 对于读端而言，
    // 如果我们打开文件，但是写段，但是这个管道文件还没有被写方式打开，
    // 那么读管道的进程会一直阻塞，直到写管道的进程打开管道文件
    // 这被称为进程同步
    if (fifo.openForRead())
    {
        std::cout << "server open named pipe done" << std::endl;
        sleep(3);
        while (true)
        {
            std::string message;
            int n = fifo.readNamedPipe(&message);
            if (n > 0)
            {
                std::cout << "client say> " << message << std::endl;
            }
            else if (n == 0)
            {
                std::cout << "client quit, server quit too!" << std::endl;
                break;
            }
            else
            {
                std::cout << "fifo.readNamedPipe Error" << std::endl;
                break;
            }
        }
    }

    return 0;
}
